modern-node-polyfills
A way to enable using Node native modules in non-node (Browser, Cloudflare, Deno,
...) environemnts with modern polyfills from JSPM.
Here are the modules that are supported in modern-node-polyfills.
Example
import { polyfillPath } from "modern-node-polyfills";
console.log(await polyfillPath("fs"))
polyfillPath
This function returns the path of the requested module.
await polyfillPath("fs");
await polyfillPath("node:fs")
polyfillContent
It returns the bundled content of a specific node module instead of a path.
console.log(await polyfillContent("fs"));
inject
This function tries to do the work of @rollup/plugin-inject plugin! but it also adds a new option called expressions
which is for replacing javascript expressions like __filename
.
console.log(await inject("console.log(__filename);", {
expressions: { __filename: "/" },
modules: {
Buffer: [await polyfillPath("buffer"), "Buffer"],
}
}))
polyfillGlobals
A way to polyfill all global node expressions, in this case, process
,
Buffer
, global
, setImmediate
, clearImmediate
, __dirname
and __filename
. It's possible to customize the __filename
and __dirname
values in the second argument of this function.
console.log(await polyfillGlobals(`
console.log(global);
console.log(process);
console.log(Buffer);
console.log(setImmediate);
console.log(clearImmediate);
`))
Contribution
Feel free to let me know what you need for this package or what issue you have,
I'd be happy!